﻿#ifndef _CORE_H_
#define _CORE_H_
#include "common_inc.h"

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */





typedef enum module_capacity_e {
	MODULE_CAPACITY_REDIS,		//!< redis服务器
	MODULE_CAPACITY_WINDOW,		//!< 窗口运行

}MODULE_CAPACITY_E;



typedef struct fmodule_fops_s {
	int (*FMODULE_Init)(void *pArg);		//!< 功能模块初始化
	int (*FMODULE_DeInit)(void *pArg);		//!< 功能模块去初始化
	void *(*FMODULE_Pthread)(void *pArg);	//!< 功能模块线程函数
}FMODULE_FOPS_S;



 /**
 * @brief 功能模块
 */
typedef struct func_module_s {
	MODULE_CAPACITY_E enCap;	//!< 模块能力
	char s8Name[16];			//!< 模块名字
	void *pArg;					//!< 私有参数：作为参数传入FMODULE_FOPS_S里的所有方法
	FMODULE_FOPS_S stFops;		//!< 功能模块函数

	uint32_t u32Id;				//!< 模块id
	pthread_t stPid;			//!< 模块线程
	//PTHREAD_CTRL_CLIENT_S stCtrl;
}FUNC_MODULE_S;



/**
 * @brief 系统函数
 */
typedef struct sys_func_fops_s {

	int (*SYS_Init)(void);		//!< 系统初始化
	int (*SYS_Proc)(void);		//!< 系统运行
	int (*SYS_ShutDown)(void);	//!< 系统关机

}SYS_FUNC_FOPS_S;




typedef struct sys_module_s {
	bool bRun;							//!< 	系统运行状态
	FUNC_MODULE_S *pstFuncModuleSet;	//!< 	功能模块集合
	int s32FuncModuleNum;
	SYS_FUNC_FOPS_S stFops;				//!< 	对接系统API接口函数
}SYS_MODULE_S;


#ifdef __cplusplus
}
#endif  /* __cplusplus */

#endif
